package com.ifdom.thread.threadpoolworkqueue;

/**
 * 优先任务队列
 * 创建一个包含自定义优先级的的线程实现类，也就是任务
 *
 * @Author ifredomvip@gmail.com
 * @Date 2022/10/4 10:57
 * @Version 1.0.0
 * @Description
 **/
class PriorityTaskHandle implements Runnable, Comparable<PriorityTaskHandle> {
    private int priority;

    public PriorityTaskHandle() {
    }

    public PriorityTaskHandle(int priority) {
        this.priority = priority;
    }

    public int getPriority() {
        return priority;
    }

    public void setPriority(int priority) {
        this.priority = priority;
    }

    @Override
    public int compareTo(PriorityTaskHandle o) {
        System.out.println(this.priority + "=====" + o.priority  +  (this.priority > o.priority));
        return this.priority > o.priority ? -1 : 1;
    }
        // 设置支持最大线程数为2，第一次优先级判定，没有课比较线程，因此根据FIFO先进先出特性，先执行堆中的第一个任务，然后执行第二个任务。
        // 第一个任务执行完毕后，开始比较缓存队列中的任务优先级。
        // 随机取出缓存队列中的若干任务，立即执行堆中的第二个任务，
    @Override
    public void run() {
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("执行任务:" + this.priority);

    }
}